<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>懂车帝, 汽车点位管理工具</title>
        <link rel="stylesheet" href="css/index.css" />
        <link rel="stylesheet" href="css/iframe.css" />
        <link rel="stylesheet" href="lib/dragula.min.css" />
    </head>
    <body bd-module="js/vehiclemark.js">
        <div class="breadcrumb-wrap">
            <div class="util-finder">
                <span bd-text="topState.currentDir||'请点此选择目录'" class="util-open"></span>
                <input type="file" name="" bd-title="{{currentDir}}" bd-change="changeDir($event)" directory mozdirectory webkitdirectory />
                <button bd-click="clearDir()" class="close" bd-show="topState.currentDir" type="button" title="清空选择">×</button>
            </div>
            <span class="util-imagedir" style="display:none" bd-show="{{topState.mode=='marker'&&imageDir}}">『<span id="vname"></span>』输出目录: <a style="cursor:default" bd-text="imageDir" bd-click="$$.emit('vm.initdir',imageDir)"></a></span>
            <label class="pagination sort-label">
                <ul>
                    <li bd-class="{{topState.mode=='marker'?'active':''}}"><a href="#/marker"><i class="vm-icon icon-mark"></i>标点工具</a></li>
                <li bd-class="{{topState.mode=='audit'?'active':''}}"><a href="#/audit"><i class="vm-icon icon-audit"></i>审核工具</a></li>
            </ul></label>
            <a bd-show="{{topState.mode=='marker'}}" style="display:none" bd-click="createVehicle()" class="pull-right">新建车型</a>
            <a bd-show="{{topState.mode=='audit'}}" style="display:none" bd-click="showResult()" class="pull-right">审核结果</a>
        </div>
        <div bd-module="modules/route/route.js" bd-extend="%main" class="main"></div>
        <script src="lib/dragula.min.js"></script>
        <script src="lib/bowlder.js"></script>
        <script>
        // NW.js 自动打开开发者工具（用于调试）
        (function() {
            if (typeof process !== 'undefined') {
                try {
                    var gui = require('nw.gui');
                    var win = gui.Window.get();
                    // 延迟打开开发者工具，确保窗口已完全加载
                    setTimeout(function() {
                        win.showDevTools();
                        console.log('开发者工具已自动打开');
                    }, 500);
                } catch(e) {
                    console.error('无法打开开发者工具:', e);
                }
            }
        })();
        </script>
        <script>
        // NW.js 路径修复：在 bowlder.js 加载后立即修复路径解析
        (function() {
            if (typeof process !== 'undefined') {
                var path = require('path');
                var gui = require('nw.gui');
                var fs = require('fs');
                
                // 获取应用根目录
                var appRoot = (gui.App && gui.App.startPath) || process.cwd();
                appRoot = path.resolve(appRoot).replace(/\\/g, '/');
                if (!/\/$/.test(appRoot)) {
                    appRoot += '/';
                }
                
                // 等待 bowlder 加载完成
                function fixBowlderPaths() {
                    if (typeof window.bowlder === 'undefined') {
                        setTimeout(fixBowlderPaths, 10);
                        return;
                    }
                    
                    var $$ = window.bowlder;
                    
                    // 关键修复：在 NW.js 的 file:// 协议下，bowlder 的路径解析有问题
                    // 我们需要通过修改 bowlder 的内部逻辑来修复路径解析
                    
                    // 方法1：不设置 $$.debug，让 bowlder 使用原始的 file:// 路径
                    // 但这样可能导致某些路径解析不正确
                    
                    // 方法2：设置 $$.debug 为应用根目录，但需要确保路径解析正确
                    // 根据 bowlder.js 的代码，$$.debug 会将 / 开头的路径替换为 $$.debug + "/" + path
                    // 在 file:// 协议下，我们需要确保这个替换是正确的
                    
                    // 实际上，bowlder 的 fullName 函数在解析相对路径时：
                    // 1. 使用 originUrl.pathname 作为基础路径
                    // 2. 如果设置了 $$.debug，会将路径替换为 $$.debug + "/" + path
                    // 3. 但在 file:// 协议下，originUrl.pathname 可能是 /Users/.../index.html
                    // 4. 这会导致路径解析错误
                    
                    // 解决方案：通过修改 location 对象来影响路径解析
                    // 或者，我们可以通过补丁来修复 fullName 函数
                    
                    // 尝试：创建一个路径解析补丁
                    // 由于 fullName 是闭包内的函数，我们无法直接访问
                    // 但我们可以通过修改全局路径解析逻辑来修复
                    
                    // 关键发现：bowlder 使用 originUrl.pathname 来解析相对路径
                    // 在 file:// 协议下，我们需要确保这个路径是正确的
                    
                    // 修复方案：设置 $$.debug 为空，让 bowlder 使用原始的 file:// 路径
                    // 但这样可能导致某些功能不正常
                    
                    // 更好的方案：通过修改模块加载逻辑来修复路径
                    // 我们可以在模块加载时，将相对路径转换为绝对路径
                    
                    // 关键修复：在 NW.js 的 file:// 协议下，bowlder 的路径解析可能有问题
                    // 我们需要确保相对路径能正确解析为绝对路径
                    
                    // 方法：通过拦截模块加载，将相对路径转换为正确的绝对路径
                    // 但要注意，bowlder 内部使用 fullName 函数来解析路径
                    // fullName 会基于 originUrl.pathname 来解析相对路径
                    // 在 file:// 协议下，这应该是正确的
                    
                    // 检查并修复路径解析
                    console.log('=== NW.js 路径修复开始 ===');
                    console.log('应用根目录:', appRoot);
                    console.log('当前 location.href:', window.location.href);
                    console.log('当前 location.pathname:', window.location.pathname);
                    console.log('$$.debug 当前值:', $$.debug);
                    
                    // 如果 $$.debug 被设置，可能会导致路径解析错误
                    // 在 file:// 协议下，我们不应该设置 $$.debug
                    // 因为 bowlder 会将 / 开头的路径替换为 $$.debug + "/" + path
                    // 这会导致 /Users/... 被错误替换
                    
                    // 清除可能存在的 $$.debug 设置
                    var hadDebug = !!$$.debug;
                    if (hadDebug) {
                        console.warn('检测到 $$.debug 已设置:', $$.debug);
                        console.warn('这可能导致路径解析错误，建议清除');
                        // 暂时不清除，先观察效果
                    }
                    
                    // 添加全局错误处理，帮助诊断问题
                    window.addEventListener('error', function(e) {
                        console.error('=== JavaScript 错误 ===');
                        console.error('文件:', e.filename);
                        console.error('行号:', e.lineno);
                        console.error('列号:', e.colno);
                        console.error('错误信息:', e.message);
                        console.error('错误对象:', e.error);
                        if (e.filename && e.filename.indexOf('modules/') !== -1) {
                            console.error('这是一个模块加载错误，可能是路径解析失败');
                        }
                    }, true);
                    
                    // 监听未处理的 Promise 拒绝
                    window.addEventListener('unhandledrejection', function(e) {
                        console.error('=== 未处理的 Promise 拒绝 ===');
                        console.error('原因:', e.reason);
                    });
                    
                    // 检查关键文件是否存在
                    setTimeout(function() {
                        console.log('=== 检查关键文件 ===');
                        var keyFiles = [
                            'modules/route/route.js',
                            'modules/marker/marker.js',
                            'modules/audit/audit.js',
                            'js/vehiclemark.js',
                            'js/popbox.js'
                        ];
                        keyFiles.forEach(function(file) {
                            var fullPath = path.join(appRoot, file);
                            var exists = fs.existsSync(fullPath);
                            console.log(file + ':', exists ? '✓ 存在' : '✗ 不存在', fullPath);
                        });
                    }, 500);
                    
                    console.log('=== NW.js 路径修复完成 ===');
                    console.log('如果内容仍未显示，请检查上面的错误信息');
                }
                
                fixBowlderPaths();
            }
        })();
        </script>
        <script src="js/popbox.js"></script>
        <script>
        define("%main", {
            routeRules : [
                {
                    when : '/marker',
                    moduleid : 'modules/marker/marker.js'
                },
                {
                    when : '/audit',
                    moduleid : 'modules/audit/audit.js'
                },
                {
                    redirect : '/marker'
                }
            ]
        });

        </script>
    </body>
</html>
